package binary_tree.LeetCode;

/**
 * 判断二叉树是否镜像对称
 * 根节点的左子树和右子树的值相等&&左子树的左树和右子树的右树镜像相等&&左子树的右树和右子树的左树镜像相等
 */
public class Num101 {

    public boolean isSymmetric(TreeNode root) {
        if(root==null){
            return true;
        }
        return isMirror(root.left,root.right);
    }
    /**
     * 传入两个二叉树的根节点，就可以判断两个二叉树是否镜像相等
     * r1.val==r2.val&&r1.left==r2.right&&r1.right==r2.left
     * @param r1
     * @param r2
     * @return
     */
    public boolean isMirror(TreeNode r1,TreeNode r2){
        if (r1==null&&r2==null){
            return true;
        }
        if (r1==null||r2==null){
            return false;
        }
        return r1.val== r2.val&&isMirror(r1.left,r2.right)&&isMirror(r1.right,r2.left);
    }

}
